'''
  开发自定义爬虫模块
'''
#导入第三方库
import requests,re,time
from bs4 import BeautifulSoup
from selenium import webdriver

#创建自定义爬虫Spider类
class Spider():
    #给定目标网页的URL地址
    def __init__(self,url=None,headers=None):
        self.url = url
        self.headers = headers

    #定义一个使用requests库获取网页源代码的方法，返回网页源代码
    #如果需要，指定headers如用户代理、cookie、代理IP等信息
    def requests_getHtmlSource(self):
        try:
            r = requests.get(self.url,headers=self.headers)
            r.raise_for_status()
            html=r.text
        except:
            html = "error"
        return html

    #定义一个基于beautifulsoup库获得目标文本内容的方法，selector为选择器组合
    #返回目标文本内容列表
    def beautifulsoup_getTarget(self,selector=None,attrs=None):
        soup = BeautifulSoup(self.requests_getHtmlSource(),'html.parser')
        resultset = soup.select(selector)
        res = [item.text for item in resultset]
        # res = [item.replace('\n','') for item in res]
        return res

    #定义一个使用re正则匹配获取目标文本内容的方法，pattern为匹配模式，flags为标识位
    #返回目标文本内容列表
    def re_getTarget(self,pattern=None,flag=None):
        targetPattern = re.compile(pattern)
        res = targetPattern.findall(self.requests_getHtmlSource())
        return res

    #定义一个使用selenium库获取目标文本内容的方法，selector为选择器组合
    #返回目标文本内容列表
    def selenium_scrapy(self,selector=None):
        chrome = webdriver.Chrome()
        chrome.implicitly_wait(3)
        chrome.get(self.url)
        target_elements = chrome.find_elements_by_css_selector(selector)
        res = [item.text for item in target_elements]
        return res


